電腦最基本的資料單位是 Bit(位元)。
一個 Bit 只有兩種狀態:
0 或 1
8 個 Bits = 1 Byte
例如:
01001000
而一個 Byte 可以表示:
00000000 ~ 11111111
總共 2^8 = 256 種可能。
上一篇看到的 Hex,就是用十六進位表示 Byte:
Binary
01001000
↓
Hex
48
所以當我們在 Hex Editor 裡看到:
48 65 6C 6C 6F
其實就是連續的 5 個 Bytes。
硬碟會把儲存空間切成很多小區塊,常見的 Sector 大小是 512 Bytes和 4 KB 。
硬碟
┌────────┬────────┬────────┬────────┐
│Sector 0│Sector 1│Sector 2│Sector 3│
│ │ │ │ │
└────────┴────────┴────────┴────────┘
每個 Sector 都有固定大小,可以用來定位儲存媒體上的資料。
例如:
Sector 0
Sector 1
Sector 2
Sector 3
...
就像把一整排置物櫃編號,讓系統知道資料位於哪個位置。
Cluster(叢集) 是檔案系統用來分配儲存空間的基本單位。
一個 Cluster 通常由一或多個 Sector 組成。
例如假設:
1 Sector = 512 Bytes
8 Sectors = 1 Cluster
那麼:
1 Cluster
= 8 × 512 Bytes
= 4096 Bytes
= 4 KB
也就是:
Sector
┌──────┬──────┬──────┬──────┐
│ 512B │ 512B │ 512B │ 512B │
├──────┼──────┼──────┼──────┤
│ 512B │ 512B │ 512B │ 512B │
└──────┴──────┴──────┴──────┘
↓
1 Cluster
4 KB
那檔案又是怎麼放進去的?
假設現在有一個:
test.txt
大小是 10 KB。
假設這顆硬碟的 Cluster 大小是:
4 KB
那這個檔案就至少需要 3 個 Clusters。
test.txt
┌────────────┐
│ Cluster 1 │ 4 KB
├────────────┤
│ Cluster 2 │ 4 KB
├────────────┤
│ Cluster 3 │ 2 KB 使用
│ │ 2 KB 未使用
└────────────┘
因為當我們看到一個檔案時:
report.pdf
表面上看起來只是一個檔案。
但從儲存媒體的角度,它其實是:
report.pdf
↓
多個 Clusters
↓
多個 Sectors
↓
大量 Bytes
↓
Bits
如果檔案被刪除、部分覆寫,甚至檔案系統的資訊損壞,就可能需要從更底層的資料開始分析。
另外,檔案使用的 Clusters 不一定會全部連在一起。
例如:
Disk
┌──────┬──────┬──────┬──────┬──────┬──────┐
│ A │ B │ A │ C │ A │ B │
└──────┴──────┴──────┴──────┴──────┴──────┘
假設 A 是某個檔案:
A → Cluster 1
A → Cluster 3
A → Cluster 5
檔案系統會記錄這些 Cluster 的位置,讓作業系統知道這幾個地方的資料其實屬於同一個檔案。
| 名稱 | 可以怎麼理解 |
|---|---|
| Bit | 0 或 1 |
| Byte | 8 個 Bits |
| Sector | 儲存媒體上的固定大小區塊 |
| Cluster | 檔案系統分配空間的基本單位 |
| File | 檔案系統管理的資料 |
檔案是由許多資料組成,而檔案系統會使用 Cluster 來分配儲存空間。